﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using netDxf;
using ShowDXF;
using netDxf.Entities;

namespace ShowDXF
{
    public class MoveZero
    {
        public int Line_count;//定义直线的数量
        public List<float> DxfExPoint_X = new List<float>(); //定义图形的最大和最小X值的数组
        public List<float> DxfExPoint_Y = new List<float>(); //定义图形的最大和最小Y值的数组

        /// <summary>
        /// dxf图形在X轴方向移动到原点的距离
        /// </summary>
        public float MoveLength_X;       //定义dxf图形在X轴方向移动到原点的距离
        /// <summary>
        /// dxf图形在Y轴方向移动到原点的距离
        /// </summary>
        public float MoveLength_Y;       //定义dxf图形在Y轴方向移动到原点的距离

        /// <summary>
        /// 获取Dxf文件在X轴及Y轴上的最大值和最小值
        /// </summary>
        public void GetExPoint()
        {
            //获取直线Line所有坐标点X轴的最大最小值，以及Y轴的最大最小值
            DxfExPoint_X = LoadLine.LineExPoint_X;
            DxfExPoint_Y = LoadLine.LineExPoint_Y;

            GetMoveZero_X();
            GetMoveZero_Y();
        }


        public float GetMoveZero_X() //移动dxf图形左下角坐标移动至原点，移动的变量为【MoveLength_X，MoveLength_Y】，本方法是移动到X轴的方法
        {
            //以下为计算图形X方向移动到原点的距离
            //通过移动图形使图形的左下角和原点重合
            if (DxfExPoint_X.Min() <= 0) //如果直线X轴的最小值为负或零时
            {
                MoveLength_X = Math.Abs(DxfExPoint_X.Min()); //X轴移动的数值

            }
            else
            {
                MoveLength_X = -DxfExPoint_X.Min(); //X轴移动的数值

            }

            return MoveLength_X;
        }


        public float GetMoveZero_Y() //移动dxf图形左下角坐标移动至原点，移动的变量为【MoveLength_X，MoveLength_Y】，本方法是移动到Y轴的方法
        {
            //以下为计算图形Y方向移动到原点的距离
            //通过移动图形使图形的左下角和原点重合
            if (DxfExPoint_Y.Min() <= 0) //如果直线X轴的最小值为负或零时
            {
                MoveLength_Y = Math.Abs(DxfExPoint_Y.Min()); //Y轴移动的数值

            }
            else
            {
                MoveLength_Y = -DxfExPoint_Y.Min(); //Y轴移动的数值

            }

            return MoveLength_Y;
        }

    }

}
